iT邦幫忙

2023 iThome 鐵人賽

DAY 8
3
Software Development

Spring Boot 零基礎入門系列 第 8

Spring Boot 零基礎入門 (9) - Bean 的初始化 - @PostConstruct

  • 分享至 

  • xImage
  •  

什麼是 Bean 的初始化?


所謂的「Bean 的初始化」,就是指「在 Bean 被創建出來之後,對這個 Bean 去做一些初始值的設定」,譬如說把他內部的變數的值設定成 5、或是進行一些運算之類的,反正就是對這個 Bean 去做初始的出廠設定就對了。

舉例來說,如果我們想要改寫上面的 HpPrinter,將他裡面的 count 變數的值「初始化成 5」的話,那麼我們就可以這樣做:

首先我們先在 HpPrinter 新增一個新的方法 initialize()並且在這個方法上面,加上一行 @PostConstruct,這樣我們等一下就可以在這個方法中, 去初始化 Bean 的值。

@PostConstruct
public void initialize() {
    count = 5;
}

9-2.png

像是我們可以在 initialize() 的方法中,去初始化這個 Bean 的值,譬如說我們可以把 count 的值設成 5,就可以將 count 變數的值初始化成 5。

9-3.png

所以到時候,當 Spring Boot 創建出 hpPrinter 這個 Bean 之後,Spring Boot 就會接著去執行 initialize() 方法,將 count 的設定成 5,進而就可以完成 Bean 的初始化了!

9-4.png


上一篇
Spring Boot 零基礎入門 (8) - 指定注入的 Bean - @Qualifier
下一篇
Spring Boot 零基礎入門 (10) - 讀取 Spring Boot 設定檔 - @Value、application.properties
系列文
Spring Boot 零基礎入門29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
rockywang
iT邦新手 4 級 ‧ 2024-10-08 18:38:52

請問不能直接使用建構子來初使 count 的數值嗎?

古古 iT邦新手 2 級 ‧ 2024-10-10 00:11:45 檢舉

建構子也是可以拿來初始化的!
只是就如同文中的「補充 1:我們真的需要 @PostConstruct 嗎?」提到的,使用 @PostConstruct 來初始化的強項在於 @PostConstruct 可以進行複雜的初始化」,所以通常在 Spring Boot 中,還是會優先使用 @PostConstruct 來進行初始化!

rockywang iT邦新手 4 級 ‧ 2024-10-11 10:52:02 檢舉

建構子不是一樣能進行複雜的初始化嗎? 這樣一說,請教建構子跟 @PostConstruct 的順序,應該是先建構子,等建構完成後,接著才會執行 @PostConstruct 對嗎?

如果建構子也能進行複雜的始化,與 @PostConstruct 的差異是什麼?

我要留言

立即登入留言